웹소켓 (WebSocket)
서버와 클라이언트가 하나의 연결을 유지하며 실시간으로 양방향 통신하는 프로토콜
HTTP vs WebSocket
| 항목 |
HTTP |
WebSocket |
| 통신 방향 |
단방향 (클라이언트 요청 → 서버 응답) |
양방향 (서버도 자유롭게 전송 가능) |
| 연결 유지 |
요청마다 연결 수립·종료 |
지속 연결 유지 |
| 오버헤드 |
요청마다 헤더 전송 |
연결 후 헤더 없이 데이터만 전송 |
| 프로토콜 |
HTTP/HTTPS |
WS/WSS |
연결 과정 (핸드셰이크)
1. 클라이언트 → HTTP Upgrade 요청
GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
2. 서버 → 101 Switching Protocols 응답
3. 이후 WebSocket 프레임으로 양방향 통신
활용 사례
- 실시간 채팅 (카카오톡 웹, Slack)
- 실시간 알림 (주식 가격, 배달 위치)
- 온라인 게임 (멀티플레이어 상태 동기화)
- 협업 도구 (Google Docs 동시 편집)
HTTP Polling과 비교
| 방식 |
설명 |
단점 |
| Short Polling |
클라이언트가 주기적으로 요청 |
불필요한 요청 多, 지연 있음 |
| Long Polling |
서버가 데이터 생길 때까지 응답 보류 |
연결 지속 비용 |
| WebSocket |
단일 연결로 양방향 실시간 통신 |
초기 구현 복잡 |
면접 포인트
- WebSocket이 필요한 이유: HTTP는 클라이언트가 먼저 요청해야 하므로 서버 Push 불가 → 실시간성 불리
- HTTP Polling과 차이: Polling은 주기적 요청으로 지연·낭비 발생, WebSocket은 연결 유지로 즉시 전송
- SSE(Server-Sent Events)와 차이: SSE는 단방향(서버→클라이언트)만 가능, WebSocket은 양방향
관련 개념